package com.triones.biz.infra.service.file;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.biz.infra.entity.file.bo.FileConfigBO;
import com.triones.framework.file.core.client.FileClient;
import com.triones.biz.infra.entity.file.vo.FileConfigVO;

import java.util.Collection;
import java.util.List;

/**
 * 文件配置 Service 接口
 *
 * @author triones
 * 2023-09-19
 */
public interface FileConfigService {

    /**
     * 初始化文件客户端
     */
    void initLocalCache();

    /**
     * 查询文件配置
     */
    FileConfigVO queryById(Long id);

    /**
     * 查询文件配置列表
     */
    TableDataInfo<FileConfigVO> queryPageList(FileConfigBO bo, PageQuery pageQuery);

    /**
     * 查询文件配置列表
     */
    List<FileConfigVO> queryList(FileConfigBO bo);

    /**
     * 新增文件配置
     */
    Boolean insertByBo(FileConfigBO bo);

    /**
     * 修改文件配置
     */
    Boolean updateByBo(FileConfigBO bo);

    /**
     * 校验并批量删除文件配置信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 更新文件配置为 Master
     */
    void updateFileConfigMaster(Long id);

    /**
     * 获得指定编号的文件客户端
     *
     * @param id 配置编号
     * @return 文件客户端
     */
    FileClient getFileClient(Long id);

    /**
     * 获得 Master 文件客户端
     *
     * @return 文件客户端
     */
    FileClient getMasterFileClient();
}
